import pickle,base64
from django_redis import get_redis_connection
from alipay import AliPay

def merge_cart_cookie_to_redis(request,user,response):
    """购物车合并，以cookies为准"""

    # 此功能在用户登录时执行，故需在用户登录时调用此方法，（包括QQ第三方登录）
    """
        {
            1: {'count': 1, 'selected': True}
        }
    """
    cart_str = request.COOKIES.get('carts')
    if cart_str is None:
        return
    cart_dict = pickle.loads(base64.b64decode(cart_str.encode()))
    redis_conn = get_redis_connection("carts")
    pl = redis_conn.pipeline()
    # 将cookies中的数据取出依照redis存储的数据格式写入，当数据冲突时，以cookies数据为准，即cookies数据覆盖redis数据
    for sku_id,sku_dict in cart_dict.items():
        pl.hset('carts_%s' % user.id,sku_id,sku_dict['count'])
        if sku_dict['selected']:
            pl.sadd('selected_%s' % user.id,sku_id)
        else:
            pl.srem('selected_%s' % user.id,sku_id)
    pl.execute()
    response.delete_cookie('carts')